package com.xinlu.user.action;

import org.apache.commons.lang.StringUtils;

import com.xinlu.common.exception.LogicException;
import com.xinlu.common.game.bo.BankBackBo;
import com.xinlu.common.game.bo.ConstantLstBo;
import com.xinlu.derek.common.BaseAction;
import com.xinlu.derek.common.BaseForm;
import com.xinlu.persistence.Users;
import com.xinlu.user.bo.UsersBo;
import com.xinlu.user.bo.YhxxBo;
import com.xinlu.user.dao.MD5Util;
import com.xinlu.user.form.GxjczForm;

public class GxjczAction extends BaseAction {

	GxjczForm fr = new GxjczForm();
	private UsersBo usersBo;
	private BankBackBo bankBackBo;
	private YhxxBo yhxxBo;

	public void setYhxxBo(YhxxBo yhxxBo) {
		this.yhxxBo = yhxxBo;
	}

	public void setBankBackBo(BankBackBo bankBackBo) {
		this.bankBackBo = bankBackBo;
	}

	public void setFr(GxjczForm fr) {
		this.fr = fr;
	}

	public void setUsersBo(UsersBo usersBo) {
		this.usersBo = usersBo;
	}

	@Override
	public String doExecute() throws Exception {
		return null;
	}

	@Override
	public void formInit() {
	}

	@Override
	public BaseForm getModel() {
		return fr;
	}

	/**
	 * 加载页面
	 * 
	 * @return
	 */
	public String loadPage() {

		if (ConstantLstBo.isNullOrEmpty(fr.getXjyhm())) {
			throw new LogicException("下级用户为空.");
		}

		Users xjyh = usersBo.loadUser(fr.getXjyhm());
		Users crtUser = (Users) getSession().getAttribute("userinfo");

		fr.setZhye(ConstantLstBo.getDoubleValue(crtUser.getUermoney()) + "");
		fr.setXjzhye(ConstantLstBo.getDoubleValue(xjyh.getUermoney()) + "");

		return "gxjcz";
	}

	/**
	 * 充值
	 * 
	 * @return
	 */
	public String chongZhi() {
		Users xjyh = usersBo.loadUser(fr.getXjyhm());
		Users crtUser = (Users) getSession().getAttribute("userinfo");
		crtUser = this.usersBo.loadUser(crtUser.getUsername());
		if (!MD5Util.encodePassword(fr.getMm()).toLowerCase().equals(crtUser.getUserpass().toLowerCase())) {
			throw new LogicException("密码错误.");
		}

		Double czje = Double.parseDouble(fr.getCzje());
		if (czje <= 100) {
			throw new LogicException("充值金额要大于为100.");
		}
		if (czje > crtUser.getUermoney()) {
			throw new LogicException("充值金额最多为." + crtUser.getUermoney());
		}

		xjyh.setUermoney(ConstantLstBo.getDoubleValue(xjyh.getUermoney()) + czje);
		xjyh.setAllmoney(ConstantLstBo.getDoubleValue(xjyh.getAllmoney()) + czje);

		crtUser.setUermoney(ConstantLstBo.getDoubleValue(crtUser.getUermoney()) - czje);
		crtUser.setAllmoney(ConstantLstBo.getDoubleValue(crtUser.getAllmoney()) - czje);

		bankBackBo.chongZhi(crtUser, xjyh, czje);
		yhxxBo.gxjcz(crtUser.getUsername(),xjyh,czje);
		usersBo.update(crtUser);
		usersBo.update(xjyh);

		getSession().setAttribute("userinfo", crtUser);

		return "hygl";
	}

}
